package com.anzuo.app.data.local.dao

import androidx.room.*
import com.anzuo.app.data.local.entity.ItemEntity
import kotlinx.coroutines.flow.Flow

/**
 * ItemDao - 数据访问对象
 * 定义数据库操作接口
 * 
 * @author AnZuo
 * @date 2024
 */
@Dao
interface ItemDao {

    /**
     * 获取所有Item
     */
    @Query("SELECT * FROM items")
    suspend fun getAllItems(): List<ItemEntity>

    /**
     * 使用Flow观察数据变化
     */
    @Query("SELECT * FROM items")
    fun observeAllItems(): Flow<List<ItemEntity>>

    /**
     * 根据ID获取Item
     */
    @Query("SELECT * FROM items WHERE id = :id")
    suspend fun getItemById(id: Long): ItemEntity?

    /**
     * 插入Item列表
     */
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    suspend fun insertItems(items: List<ItemEntity>)

    /**
     * 插入单个Item
     */
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    suspend fun insertItem(item: ItemEntity)

    /**
     * 更新Item
     */
    @Update
    suspend fun updateItem(item: ItemEntity)

    /**
     * 删除Item
     */
    @Delete
    suspend fun deleteItem(item: ItemEntity)

    /**
     * 删除所有Item
     */
    @Query("DELETE FROM items")
    suspend fun deleteAllItems()
}

